package com.itheima.ydd.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.ydd.common.PageBean;
import com.itheima.ydd.common.R;
import com.itheima.ydd.common.ResultData;
import com.itheima.ydd.entity.YddUser;
import com.itheima.ydd.service.IYddUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author author
 * @since 2022-05-22
 */
@RestController
@RequestMapping("/ydd_user")
public class YddUserController {

    @Autowired
    private IYddUserService yddUserService;

    /**
     * 会员管理下的用户管理查询列表
     * @param sex
     * @param username
     * @param mobile
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public ResultData list(String sex,String username,String mobile,Integer page,Integer limit){
        // 构建分页查询器
        // Integer.parseInt(page),Integer.parseInt(limit)
        Page<YddUser> pageInfo = new Page<>(page,limit);
        // 条件构造器
        LambdaQueryWrapper<YddUser> queryWrapper = new LambdaQueryWrapper<>();
        // 添加查询条件
        // StringUtils.hasText 如果里面的值为null,"","   "，那么返回值为false；否则为true
        queryWrapper.like(StringUtils.hasText(sex),YddUser::getSex,sex);
        queryWrapper.like(StringUtils.hasText(username),YddUser::getUsername,username);
        queryWrapper.like(StringUtils.hasText(mobile),YddUser::getMobile,mobile);
        yddUserService.page(pageInfo,queryWrapper);
        PageBean<YddUser> pageBean = new PageBean<>();
        pageBean.setCurrentPage(pageInfo.getCurrent()); // 当前页
        pageBean.setData(pageInfo.getRecords()); // 封装的具体数据集合
        pageBean.setPageSize(pageInfo.getSize()); // 每页显示条数
        pageBean.setCount(pageInfo.getTotal()); // 总记录数(总条数)
        pageBean.setTotalPages(pageInfo.getPages()); // 总页数
        return ResultData.ok("",pageBean);
    }

    /**
     * 新增用户
     * @param yddUser
     * @return
     */
    @PostMapping("/add")
    public ResultData add(@RequestBody YddUser yddUser){
        // 为密码进行Md5加密
        yddUser.setPassword(DigestUtils.md5DigestAsHex(yddUser.getPassword().getBytes()));
        // 调用servic的save方法保存前端传来的数据
        yddUserService.save(yddUser);
        return ResultData.ok("添加成功",null);
    }

    /**
     * 编辑回显
     * @param id
     * @return
     */
    @GetMapping("/rowInfo")
    public ResultData rowInfo(Integer id){
        YddUser yddUser = yddUserService.getById(id);
        return ResultData.ok("",yddUser);
    }

    /**
     * 用户修改
     * @param yddUser
     * @return
     */
    @PostMapping("/update")
    public ResultData update(@RequestBody YddUser yddUser){
        String password = yddUser.getPassword();
        if (password != null){
            yddUser.setPassword(DigestUtils.md5DigestAsHex(yddUser.getPassword().getBytes()));
            yddUserService.updateById(yddUser);
        } else {
            yddUserService.updateById(yddUser);
        }
        return ResultData.ok("修改成功",null);
    }

    /**
     * 删除用户信息
     * @param id
     * @return
     */
    @GetMapping("/del")
    public ResultData del(Integer id){
        yddUserService.removeById(id);
        return ResultData.ok("删除成功",null);
    }
}
